// vite.config.ts
import path from "path";
import vue from "file:///D:/project/%E6%9C%AC%E6%BA%AA/typescript/bengang/bgtypescriptNew/node_modules/@vitejs/plugin-vue/dist/index.mjs";

// src/theme/custom-variables.ts
import { theme } from "file:///D:/project/%E6%9C%AC%E6%BA%AA/typescript/bengang/bgtypescriptNew/node_modules/ant-design-vue/lib/index.js";
import convertLegacyToken from "file:///D:/project/%E6%9C%AC%E6%BA%AA/typescript/bengang/bgtypescriptNew/node_modules/ant-design-vue/lib/theme/convertLegacyToken.js";
var { defaultAlgorithm, defaultSeed } = theme;
var mapToken = defaultAlgorithm(defaultSeed);
var token = convertLegacyToken.default(mapToken);
var custom_variables_default = {
  "@primary-color": token["primary-color"],
  // 全局主色
  "@base-bg-color": "#fff",
  "@hover-bg-color": "rgba(0, 0, 0, 0.025)",
  "@hover-bg-color-night": "rgba(255, 255, 255, 0.025)",
  "@header-light-bg-hover-color": "#f6f6f6",
  "@header-height": "80px",
  "@header-user-height": "40px",
  "@page-tag-height": "40px",
  "@theme-list": ["light", "dark", "night"]
};

// src/components/SvgLoad/index.ts
import { readFileSync, readdirSync } from "fs";
var idPerfix = "";
var svgTitle = /<svg([^>+].*?)>/;
var clearHeightWidth = /(width|height)="([^>+].*?)"/g;
var changPathId = /(id)=("ZONE|"zone)/g;
var hasViewBox = /(viewBox="[^>+].*?")/g;
var clearReturn = /(\r)|(\n)/g;
function svgFind(e) {
  const arr = [];
  const dirents = readdirSync(e, { withFileTypes: true });
  for (const dirent of dirents) {
    if (dirent.isDirectory()) {
      arr.push(...svgFind(e + dirent.name + "/"));
    } else {
      let svg = readFileSync(e + dirent.name).toString().replace(clearReturn, "").replace(svgTitle, ($1, $2, $3, $4) => {
        let width = 0, height = 0, content = $2.replace(clearHeightWidth, (s1, s2, s3) => {
          if (s2 === "width")
            width = s3;
          else if (s2 === "height")
            height = s3;
          return "";
        });
        if (!hasViewBox.test($2))
          content += `viewBox="0 0 ${width} ${height}"`;
        return `<symbol id="${idPerfix}-${dirent.name.replace(".svg", "")}" ${content}>`;
      }).replace("</svg>", "</symbol>");
      svg = svg.replace(changPathId, `id = "${dirent.name.replace(".svg", "")}-ZONE`);
      arr.push(svg);
    }
  }
  return arr;
}
var createSvg = (path2, perfix = "svg") => {
  if (path2 === "")
    return;
  idPerfix = perfix;
  const res = svgFind(path2);
  return {
    name: "svg-transform",
    transformIndexHtml(dom) {
      return dom.replace(
        "<body>",
        `<body><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="position: absolute; width: 0; height: 0">${res.join("")}</svg>`
      );
    }
  };
};

// vite.config.ts
import { ElementPlusResolver } from "file:///D:/project/%E6%9C%AC%E6%BA%AA/typescript/bengang/bgtypescriptNew/node_modules/unplugin-vue-components/dist/resolvers.mjs";
import mockDevServerPlugin from "file:///D:/project/%E6%9C%AC%E6%BA%AA/typescript/bengang/bgtypescriptNew/node_modules/vite-plugin-mock-dev-server/dist/index.js";
import IconsResolver from "file:///D:/project/%E6%9C%AC%E6%BA%AA/typescript/bengang/bgtypescriptNew/node_modules/unplugin-icons/dist/resolver.mjs";
import Icons from "file:///D:/project/%E6%9C%AC%E6%BA%AA/typescript/bengang/bgtypescriptNew/node_modules/unplugin-icons/dist/vite.mjs";
import AutoImport from "file:///D:/project/%E6%9C%AC%E6%BA%AA/typescript/bengang/bgtypescriptNew/node_modules/unplugin-auto-import/dist/vite.js";
import Components from "file:///D:/project/%E6%9C%AC%E6%BA%AA/typescript/bengang/bgtypescriptNew/node_modules/unplugin-vue-components/dist/vite.mjs";
var __vite_injected_original_dirname = "D:\\project\\\u672C\u6EAA\\typescript\\bengang\\bgtypescriptNew";
var pathResolve = path.resolve(__vite_injected_original_dirname, "src");
var vite_config_default = {
  optimizeDeps: {
    // 开发时 解决这些commonjs包转成esm包
    include: [
      "@jiaminghi/c-render",
      "@jiaminghi/c-render/lib/plugin/util",
      "@jiaminghi/charts/lib/util/index",
      "@jiaminghi/charts/lib/util",
      "@jiaminghi/charts/lib/extend/index",
      "@jiaminghi/charts",
      "@jiaminghi/color"
    ]
  },
  build: {
    // 打包时需要另外处理的commonjs规范的包
    commonjsOptions: {
      include: [/node_modules/]
    }
  },
  base: process.env.NODE_ENV === "production" ? "/" : "/",
  root: process.cwd(),
  resolve: {
    alias: [
      // 国际化替换
      {
        find: "vue-i18n",
        replacement: "vue-i18n/dist/vue-i18n.cjs.js"
      },
      // 绝对路径重命名：/@/xxxx => src/xxxx
      {
        find: /\/@\//,
        replacement: path.resolve("src") + "/"
      },
      {
        find: /^~/,
        replacement: ""
      }
    ]
  },
  // 服务端渲染
  server: {
    proxy: {
      "/api": {
        target: "http://10.171.7.100:8090",
        changeOrigin: true,
        rewrite: (path2) => path2.replace(/^\/api/, "")
      },
      "/mapi/excel": "http://10.171.7.100:80",
      "/mapi": {
        target: "http://10.171.7.138:8088",
        changeOrigin: true,
        rewrite: (path2) => path2.replace(/^\/mapi/, "")
      },
      "/eapi": {
        target: "http://10.171.7.135:8080/coldbigdata",
        changeOrigin: true,
        rewrite: (path2) => path2.replace(/^\/eapi/, "")
      },
      "/lapi": {
        target: "http://10.171.7.135:8080/",
        changeOrigin: true,
        rewrite: (path2) => path2.replace(/^\/lapi/, "")
      },
      "/hmi": {
        target: "http://10.171.7.122:8088",
        changeOrigin: true,
        rewrite: (path2) => path2.replace(/^\/hmi/, "")
      },
      "/lhmi": {
        target: "http://10.171.7.123:8088",
        changeOrigin: true,
        rewrite: (path2) => path2.replace(/^\/lhmi/, "")
      },
      '/lhmin': {
        target: 'http://10.171.7.125:8088',
        changeOrigin: true,
        rewrite: (path) => path.replace(/^\/lhmin/, '')
      },
      "/test": {
        target: "http://10.171.7.122:8091",
        changeOrigin: true,
        rewrite: (path2) => path2.replace(/^\/test/, "")
      },
      "/mongodb": {
        target: "http://10.171.7.136:8888",
        changeOrigin: true,
        rewrite: (path2) => path2.replace(/^\/mongodb/, "")
      },
      "/CAL1630": {
        target: "http://10.171.7.123:8088",
        changeOrigin: true,
        rewrite: (path2) => path2.replace(/^\/CAL1630/, "")
      },
      "/zinc": {
        target: "http://10.171.7.122:8888/ben_cbd",
        changeOrigin: true,
        rewrite: (path2) => path2.replace(/^\/zinc/, "")
      }
    }
  },
  plugins: [
    vue(),
    mockDevServerPlugin({
      include: "mock/**/*.mock.{ts,js,cjs,mjs,json,json5}"
    }),
    AutoImport({
      imports: ["vue"],
      resolvers: [
        ElementPlusResolver(),
        IconsResolver({
          prefix: "Icon"
        })
      ],
      dts: path.resolve(pathResolve, "auto-imports.d.ts")
    }),
    Components({
      resolvers: [
        ElementPlusResolver(),
        IconsResolver({
          enabledCollections: ["ep"]
        })
      ],
      dts: path.resolve(pathResolve, "components.d.ts")
    }),
    Icons({
      autoInstall: true
    }),
    createSvg("./src/assets/svgs/")
  ],
  build: {
    // 清除console和debugger
    terserOptions: {
      compress: {
        drop_console: true,
        drop_debugger: true
      }
    },
    rollupOptions: {
      output: {
        //配置这个是让不同类型文件放在不同文件夹，不会显得太乱
        chunkFileNames: "js/[name]-[hash].js",
        entryFileNames: "js/[name]-[hash].js",
        assetFileNames: "[ext]/[name]-[hash].[ext]",
        manualChunks(id) {
          if (id.includes("node_modules")) {
            return id.toString().split("node_modules/")[1].split("/")[0].toString();
          }
        }
      }
    },
    target: "modules",
    outDir: "dist",
    // 指定输出路径
    assetsDir: "assets",
    // 指定生成静态文件目录
    assetsInlineLimit: "4096",
    // 小于此阈值的导入或引用资源将内联为 base64 编码
    chunkSizeWarningLimit: 500,
    // chunk 大小警告的限制
    minify: "terser",
    // 混淆器，terser构建后文件体积更小
    emptyOutDir: true
    //打包前先清空原有打包文件
  },
  css: {
    preprocessorOptions: {
      less: {
        modifyVars: custom_variables_default,
        javascriptEnabled: true
      }
    }
  },
  define: {
    __INTLIFY_PROD_DEVTOOLS__: false,
    "process.env": process.env
  }
};
export {
  vite_config_default as default
};
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsidml0ZS5jb25maWcudHMiLCAic3JjL3RoZW1lL2N1c3RvbS12YXJpYWJsZXMudHMiLCAic3JjL2NvbXBvbmVudHMvU3ZnTG9hZC9pbmRleC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiY29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2Rpcm5hbWUgPSBcIkQ6XFxcXHByb2plY3RcXFxcXHU2NzJDXHU2RUFBXFxcXHR5cGVzY3JpcHRcXFxcYmVuZ2FuZ1xcXFxiZ3R5cGVzY3JpcHROZXdcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZmlsZW5hbWUgPSBcIkQ6XFxcXHByb2plY3RcXFxcXHU2NzJDXHU2RUFBXFxcXHR5cGVzY3JpcHRcXFxcYmVuZ2FuZ1xcXFxiZ3R5cGVzY3JpcHROZXdcXFxcdml0ZS5jb25maWcudHNcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfaW1wb3J0X21ldGFfdXJsID0gXCJmaWxlOi8vL0Q6L3Byb2plY3QvJUU2JTlDJUFDJUU2JUJBJUFBL3R5cGVzY3JpcHQvYmVuZ2FuZy9iZ3R5cGVzY3JpcHROZXcvdml0ZS5jb25maWcudHNcIjsvKlxyXG4gKiB2aXRlXHU5MTREXHU3RjZFXHJcbiAqXHJcbiAqIEBBdXRob3I6ICAgIDEwMjRcdTUyMUJcdTY1QjBcdTVCOUVcdTlBOENcdTVCQTQtXHU0RTNCXHU0RUZCXHVGRjFBXHU1MzUzXHU1OTI3XHJcbiAqIEBEYXRlOiAgICAgIDIwMjItMDUtMDIgMjM6NDQ6NTZcclxuICogQFdlY2hhdDogICAgemh1ZGExMDI0XHJcbiAqIEBFbWFpbDogICAgIGxhYjEwMjRAMTYzLmNvbVxyXG4gKiBAQ29weXJpZ2h0ICAxMDI0XHU1MjFCXHU2NUIwXHU1QjlFXHU5QThDXHU1QkE0IFx1RkYwOCBodHRwczovLzEwMjRsYWIubmV0IFx1RkYwOVx1RkYwQ1NpbmNlIDIwMTJcclxuICovXHJcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xyXG5pbXBvcnQgdnVlIGZyb20gJ0B2aXRlanMvcGx1Z2luLXZ1ZSc7XHJcbmltcG9ydCBjdXN0b21WYXJpYWJsZXMgZnJvbSAnLi9zcmMvdGhlbWUvY3VzdG9tLXZhcmlhYmxlcyc7XHJcbmltcG9ydCB7IGNyZWF0ZVN2ZyB9IGZyb20gJy4vc3JjL2NvbXBvbmVudHMvU3ZnTG9hZC9pbmRleCdcclxuaW1wb3J0IHsgRWxlbWVudFBsdXNSZXNvbHZlciB9IGZyb20gJ3VucGx1Z2luLXZ1ZS1jb21wb25lbnRzL3Jlc29sdmVycydcclxuaW1wb3J0IG1vY2tEZXZTZXJ2ZXJQbHVnaW4gZnJvbSAndml0ZS1wbHVnaW4tbW9jay1kZXYtc2VydmVyJ1xyXG5pbXBvcnQgSWNvbnNSZXNvbHZlciBmcm9tICd1bnBsdWdpbi1pY29ucy9yZXNvbHZlcidcclxuaW1wb3J0IEljb25zIGZyb20gJ3VucGx1Z2luLWljb25zL3ZpdGUnXHJcbmltcG9ydCB7IHByZXNldFVubywgcHJlc2V0QXR0cmlidXRpZnksIHByZXNldEljb25zLCBwcmVzZXRNaW5pIH0gZnJvbSAndW5vY3NzJ1xyXG5pbXBvcnQgQXV0b0ltcG9ydCBmcm9tICd1bnBsdWdpbi1hdXRvLWltcG9ydC92aXRlJ1xyXG5pbXBvcnQgQ29tcG9uZW50cyBmcm9tICd1bnBsdWdpbi12dWUtY29tcG9uZW50cy92aXRlJ1xyXG5jb25zdCBwYXRoUmVzb2x2ZSA9IHBhdGgucmVzb2x2ZShfX2Rpcm5hbWUsICdzcmMnKVxyXG5cclxuZXhwb3J0IGRlZmF1bHQge1xyXG5cclxuXHJcbiAgb3B0aW1pemVEZXBzOiB7XHJcbiAgICAvLyBcdTVGMDBcdTUzRDFcdTY1RjYgXHU4OUUzXHU1MUIzXHU4RkQ5XHU0RTlCY29tbW9uanNcdTUzMDVcdThGNkNcdTYyMTBlc21cdTUzMDVcclxuICAgIGluY2x1ZGU6IFtcclxuICAgICAgXCJAamlhbWluZ2hpL2MtcmVuZGVyXCIsXHJcbiAgICAgIFwiQGppYW1pbmdoaS9jLXJlbmRlci9saWIvcGx1Z2luL3V0aWxcIixcclxuICAgICAgXCJAamlhbWluZ2hpL2NoYXJ0cy9saWIvdXRpbC9pbmRleFwiLFxyXG4gICAgICBcIkBqaWFtaW5naGkvY2hhcnRzL2xpYi91dGlsXCIsXHJcbiAgICAgIFwiQGppYW1pbmdoaS9jaGFydHMvbGliL2V4dGVuZC9pbmRleFwiLFxyXG4gICAgICBcIkBqaWFtaW5naGkvY2hhcnRzXCIsXHJcbiAgICAgIFwiQGppYW1pbmdoaS9jb2xvclwiLFxyXG4gICAgXSxcclxuICB9LFxyXG4gIGJ1aWxkOiB7XHJcbiAgICAvLyBcdTYyNTNcdTUzMDVcdTY1RjZcdTk3MDBcdTg5ODFcdTUzRTZcdTU5MTZcdTU5MDRcdTc0MDZcdTc2ODRjb21tb25qc1x1ODlDNFx1ODMwM1x1NzY4NFx1NTMwNVxyXG4gICAgY29tbW9uanNPcHRpb25zOiB7XHJcbiAgICAgIGluY2x1ZGU6IFsvbm9kZV9tb2R1bGVzL11cclxuICAgIH0sXHJcbiAgfSxcclxuICBiYXNlOiBwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nID8gJy8nIDogJy8nLFxyXG4gIHJvb3Q6IHByb2Nlc3MuY3dkKCksXHJcbiAgcmVzb2x2ZToge1xyXG4gICAgYWxpYXM6IFtcclxuICAgICAgLy8gXHU1NkZEXHU5NjQ1XHU1MzE2XHU2NkZGXHU2MzYyXHJcbiAgICAgIHtcclxuICAgICAgICBmaW5kOiAndnVlLWkxOG4nLFxyXG4gICAgICAgIHJlcGxhY2VtZW50OiAndnVlLWkxOG4vZGlzdC92dWUtaTE4bi5janMuanMnLFxyXG4gICAgICB9LFxyXG4gICAgICAvLyBcdTdFRERcdTVCRjlcdThERUZcdTVGODRcdTkxQ0RcdTU0N0RcdTU0MERcdUZGMUEvQC94eHh4ID0+IHNyYy94eHh4XHJcbiAgICAgIHtcclxuICAgICAgICBmaW5kOiAvXFwvQFxcLy8sXHJcbiAgICAgICAgcmVwbGFjZW1lbnQ6IHBhdGgucmVzb2x2ZSgnc3JjJykgKyAnLycsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBmaW5kOiAvXn4vLFxyXG4gICAgICAgIHJlcGxhY2VtZW50OiAnJyxcclxuICAgICAgfSxcclxuICAgIF0sXHJcbiAgfSxcclxuICAvLyBcdTY3MERcdTUyQTFcdTdBRUZcdTZFMzJcdTY3RDNcclxuICBzZXJ2ZXI6IHtcclxuICAgIHByb3h5OiB7XHJcbiAgICAgICcvYXBpJzoge1xyXG4gICAgICAgIHRhcmdldDogJ2h0dHA6Ly8xMC4xNzEuNy4xMDA6ODA5MCcsXHJcbiAgICAgICAgY2hhbmdlT3JpZ2luOiB0cnVlLFxyXG4gICAgICAgIHJld3JpdGU6IChwYXRoKSA9PiBwYXRoLnJlcGxhY2UoL15cXC9hcGkvLCAnJylcclxuICAgICAgfSxcclxuICAgICAgJy9tYXBpL2V4Y2VsJzogJ2h0dHA6Ly8xMC4xNzEuNy4xMDA6ODAnLFxyXG4gICAgICAnL21hcGknOiB7XHJcbiAgICAgICAgdGFyZ2V0OiAnaHR0cDovLzEwLjE3MS43LjEzODo4MDg4JyxcclxuICAgICAgICBjaGFuZ2VPcmlnaW46IHRydWUsXHJcbiAgICAgICAgcmV3cml0ZTogKHBhdGgpID0+IHBhdGgucmVwbGFjZSgvXlxcL21hcGkvLCAnJylcclxuICAgICAgfSxcclxuICAgICAgJy9lYXBpJzoge1xyXG4gICAgICAgIHRhcmdldDogJ2h0dHA6Ly8xMC4xNzEuNy4xMzU6ODA4MC9jb2xkYmlnZGF0YScsXHJcbiAgICAgICAgY2hhbmdlT3JpZ2luOiB0cnVlLFxyXG4gICAgICAgIHJld3JpdGU6IChwYXRoKSA9PiBwYXRoLnJlcGxhY2UoL15cXC9lYXBpLywgJycpXHJcbiAgICAgIH0sXHJcbiAgICAgICcvbGFwaSc6IHtcclxuICAgICAgICB0YXJnZXQ6ICdodHRwOi8vMTAuMTcxLjcuMTM1OjgwODAvJyxcclxuICAgICAgICBjaGFuZ2VPcmlnaW46IHRydWUsXHJcbiAgICAgICAgcmV3cml0ZTogKHBhdGgpID0+IHBhdGgucmVwbGFjZSgvXlxcL2xhcGkvLCAnJylcclxuICAgICAgfSxcclxuICAgICAgJy9obWknOiB7XHJcbiAgICAgICAgdGFyZ2V0OiAnaHR0cDovLzEwLjE3MS43LjEyMjo4MDg4JyxcclxuICAgICAgICBjaGFuZ2VPcmlnaW46IHRydWUsXHJcbiAgICAgICAgcmV3cml0ZTogKHBhdGgpID0+IHBhdGgucmVwbGFjZSgvXlxcL2htaS8sICcnKVxyXG4gICAgICB9LFxyXG4gICAgICAnL2xobWknOiB7XHJcbiAgICAgICAgdGFyZ2V0OiAnaHR0cDovLzEwLjE3MS43LjEyMzo4MDg4JyxcclxuICAgICAgICBjaGFuZ2VPcmlnaW46IHRydWUsXHJcbiAgICAgICAgcmV3cml0ZTogKHBhdGgpID0+IHBhdGgucmVwbGFjZSgvXlxcL2xobWkvLCAnJylcclxuICAgICAgfSxcclxuICAgICAgJy90ZXN0Jzoge1xyXG4gICAgICAgIHRhcmdldDogJ2h0dHA6Ly8xMC4xNzEuNy4xMjI6ODA5MScsXHJcbiAgICAgICAgY2hhbmdlT3JpZ2luOiB0cnVlLFxyXG4gICAgICAgIHJld3JpdGU6IChwYXRoKSA9PiBwYXRoLnJlcGxhY2UoL15cXC90ZXN0LywgJycpXHJcbiAgICAgIH0sXHJcbiAgICAgICcvbW9uZ29kYic6IHtcclxuICAgICAgICB0YXJnZXQ6ICdodHRwOi8vMTAuMTcxLjcuMTM2Ojg4ODgnLFxyXG4gICAgICAgIGNoYW5nZU9yaWdpbjogdHJ1ZSxcclxuICAgICAgICByZXdyaXRlOiAocGF0aCkgPT4gcGF0aC5yZXBsYWNlKC9eXFwvbW9uZ29kYi8sICcnKVxyXG4gICAgICB9LFxyXG4gICAgICAnL0NBTDE2MzAnOiB7XHJcbiAgICAgICAgdGFyZ2V0OiAnaHR0cDovLzEwLjE3MS43LjEyMzo4MDg4JyxcclxuICAgICAgICBjaGFuZ2VPcmlnaW46IHRydWUsXHJcbiAgICAgICAgcmV3cml0ZTogKHBhdGgpID0+IHBhdGgucmVwbGFjZSgvXlxcL0NBTDE2MzAvLCAnJylcclxuICAgICAgfSxcclxuICAgICAgJy96aW5jJzoge1xyXG4gICAgICAgIHRhcmdldDogJ2h0dHA6Ly8xMC4xNzEuNy4xMjI6ODg4OC9iZW5fY2JkJyxcclxuICAgICAgICBjaGFuZ2VPcmlnaW46IHRydWUsXHJcbiAgICAgICAgcmV3cml0ZTogKHBhdGgpID0+IHBhdGgucmVwbGFjZSgvXlxcL3ppbmMvLCAnJylcclxuICAgICAgfSxcclxuICAgIH0sXHJcbiAgfSxcclxuICBwbHVnaW5zOiBbdnVlKCksXHJcbiAgbW9ja0RldlNlcnZlclBsdWdpbih7XHJcbiAgICBpbmNsdWRlOiAnbW9jay8qKi8qLm1vY2sue3RzLGpzLGNqcyxtanMsanNvbixqc29uNX0nLFxyXG4gIH0pLFxyXG4gIEF1dG9JbXBvcnQoe1xyXG4gICAgaW1wb3J0czogWyd2dWUnXSxcclxuICAgIHJlc29sdmVyczogW0VsZW1lbnRQbHVzUmVzb2x2ZXIoKSxcclxuICAgIEljb25zUmVzb2x2ZXIoe1xyXG4gICAgICBwcmVmaXg6ICdJY29uJyxcclxuICAgIH0pXSxcclxuICAgIGR0czogcGF0aC5yZXNvbHZlKHBhdGhSZXNvbHZlLCAnYXV0by1pbXBvcnRzLmQudHMnKSxcclxuICB9KSxcclxuICBDb21wb25lbnRzKHtcclxuICAgIHJlc29sdmVyczogW0VsZW1lbnRQbHVzUmVzb2x2ZXIoKSxcclxuICAgIEljb25zUmVzb2x2ZXIoe1xyXG4gICAgICBlbmFibGVkQ29sbGVjdGlvbnM6IFsnZXAnXSxcclxuICAgIH0pXSxcclxuICAgIGR0czogcGF0aC5yZXNvbHZlKHBhdGhSZXNvbHZlLCAnY29tcG9uZW50cy5kLnRzJyksXHJcbiAgfSksXHJcbiAgSWNvbnMoe1xyXG4gICAgYXV0b0luc3RhbGw6IHRydWUsXHJcbiAgfSksIGNyZWF0ZVN2ZyhcIi4vc3JjL2Fzc2V0cy9zdmdzL1wiKV0sXHJcbiAgYnVpbGQ6IHtcclxuICAgIC8vIFx1NkUwNVx1OTY2NGNvbnNvbGVcdTU0OENkZWJ1Z2dlclxyXG4gICAgdGVyc2VyT3B0aW9uczoge1xyXG4gICAgICBjb21wcmVzczoge1xyXG4gICAgICAgIGRyb3BfY29uc29sZTogdHJ1ZSxcclxuICAgICAgICBkcm9wX2RlYnVnZ2VyOiB0cnVlLFxyXG4gICAgICB9LFxyXG4gICAgfSxcclxuICAgIHJvbGx1cE9wdGlvbnM6IHtcclxuICAgICAgb3V0cHV0OiB7XHJcbiAgICAgICAgLy9cdTkxNERcdTdGNkVcdThGRDlcdTRFMkFcdTY2MkZcdThCQTlcdTRFMERcdTU0MENcdTdDN0JcdTU3OEJcdTY1ODdcdTRFRjZcdTY1M0VcdTU3MjhcdTRFMERcdTU0MENcdTY1ODdcdTRFRjZcdTU5MzlcdUZGMENcdTRFMERcdTRGMUFcdTY2M0VcdTVGOTdcdTU5MkFcdTRFNzFcclxuICAgICAgICBjaHVua0ZpbGVOYW1lczogJ2pzL1tuYW1lXS1baGFzaF0uanMnLFxyXG4gICAgICAgIGVudHJ5RmlsZU5hbWVzOiAnanMvW25hbWVdLVtoYXNoXS5qcycsXHJcbiAgICAgICAgYXNzZXRGaWxlTmFtZXM6ICdbZXh0XS9bbmFtZV0tW2hhc2hdLltleHRdJyxcclxuICAgICAgICBtYW51YWxDaHVua3MoaWQpIHtcclxuICAgICAgICAgIC8vXHU5NzU5XHU2MDAxXHU4RDQ0XHU2RTkwXHU1MjA2XHU2MkM2XHU2MjUzXHU1MzA1XHJcbiAgICAgICAgICBpZiAoaWQuaW5jbHVkZXMoJ25vZGVfbW9kdWxlcycpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBpZC50b1N0cmluZygpLnNwbGl0KCdub2RlX21vZHVsZXMvJylbMV0uc3BsaXQoJy8nKVswXS50b1N0cmluZygpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0sXHJcbiAgICB9LFxyXG4gICAgdGFyZ2V0OiAnbW9kdWxlcycsXHJcbiAgICBvdXREaXI6ICdkaXN0JywgLy8gXHU2MzA3XHU1QjlBXHU4RjkzXHU1MUZBXHU4REVGXHU1Rjg0XHJcbiAgICBhc3NldHNEaXI6ICdhc3NldHMnLCAvLyBcdTYzMDdcdTVCOUFcdTc1MUZcdTYyMTBcdTk3NTlcdTYwMDFcdTY1ODdcdTRFRjZcdTc2RUVcdTVGNTVcclxuICAgIGFzc2V0c0lubGluZUxpbWl0OiAnNDA5NicsIC8vIFx1NUMwRlx1NEU4RVx1NkI2NFx1OTYwOFx1NTAzQ1x1NzY4NFx1NUJGQ1x1NTE2NVx1NjIxNlx1NUYxNVx1NzUyOFx1OEQ0NFx1NkU5MFx1NUMwNlx1NTE4NVx1ODA1NFx1NEUzQSBiYXNlNjQgXHU3RjE2XHU3ODAxXHJcbiAgICBjaHVua1NpemVXYXJuaW5nTGltaXQ6IDUwMCwgLy8gY2h1bmsgXHU1OTI3XHU1QzBGXHU4QjY2XHU1NDRBXHU3Njg0XHU5NjUwXHU1MjM2XHJcbiAgICBtaW5pZnk6ICd0ZXJzZXInLCAvLyBcdTZERjdcdTZEQzZcdTU2NjhcdUZGMEN0ZXJzZXJcdTY3ODRcdTVFRkFcdTU0MEVcdTY1ODdcdTRFRjZcdTRGNTNcdTc5RUZcdTY2RjRcdTVDMEZcclxuICAgIGVtcHR5T3V0RGlyOiB0cnVlLCAvL1x1NjI1M1x1NTMwNVx1NTI0RFx1NTE0OFx1NkUwNVx1N0E3QVx1NTM5Rlx1NjcwOVx1NjI1M1x1NTMwNVx1NjU4N1x1NEVGNlxyXG4gIH0sXHJcbiAgY3NzOiB7XHJcbiAgICBwcmVwcm9jZXNzb3JPcHRpb25zOiB7XHJcbiAgICAgIGxlc3M6IHtcclxuICAgICAgICBtb2RpZnlWYXJzOiBjdXN0b21WYXJpYWJsZXMsXHJcbiAgICAgICAgamF2YXNjcmlwdEVuYWJsZWQ6IHRydWUsXHJcbiAgICAgIH0sXHJcbiAgICB9LFxyXG4gIH0sXHJcbiAgZGVmaW5lOiB7XHJcbiAgICBfX0lOVExJRllfUFJPRF9ERVZUT09MU19fOiBmYWxzZSxcclxuICAgICdwcm9jZXNzLmVudic6IHByb2Nlc3MuZW52LFxyXG4gIH0sXHJcbn07XHJcbiIsICJjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZGlybmFtZSA9IFwiRDpcXFxccHJvamVjdFxcXFxcdTY3MkNcdTZFQUFcXFxcdHlwZXNjcmlwdFxcXFxiZW5nYW5nXFxcXGJndHlwZXNjcmlwdE5ld1xcXFxzcmNcXFxcdGhlbWVcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZmlsZW5hbWUgPSBcIkQ6XFxcXHByb2plY3RcXFxcXHU2NzJDXHU2RUFBXFxcXHR5cGVzY3JpcHRcXFxcYmVuZ2FuZ1xcXFxiZ3R5cGVzY3JpcHROZXdcXFxcc3JjXFxcXHRoZW1lXFxcXGN1c3RvbS12YXJpYWJsZXMudHNcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfaW1wb3J0X21ldGFfdXJsID0gXCJmaWxlOi8vL0Q6L3Byb2plY3QvJUU2JTlDJUFDJUU2JUJBJUFBL3R5cGVzY3JpcHQvYmVuZ2FuZy9iZ3R5cGVzY3JpcHROZXcvc3JjL3RoZW1lL2N1c3RvbS12YXJpYWJsZXMudHNcIjtpbXBvcnQgeyB0aGVtZSB9IGZyb20gJ2FudC1kZXNpZ24tdnVlL2xpYic7XHJcbmltcG9ydCBjb252ZXJ0TGVnYWN5VG9rZW4gZnJvbSAnYW50LWRlc2lnbi12dWUvbGliL3RoZW1lL2NvbnZlcnRMZWdhY3lUb2tlbic7XHJcblxyXG5jb25zdCB7IGRlZmF1bHRBbGdvcml0aG0sIGRlZmF1bHRTZWVkIH0gPSB0aGVtZTtcclxuXHJcbmNvbnN0IG1hcFRva2VuID0gZGVmYXVsdEFsZ29yaXRobShkZWZhdWx0U2VlZCk7XHJcbmNvbnN0IHRva2VuID0gY29udmVydExlZ2FjeVRva2VuLmRlZmF1bHQobWFwVG9rZW4pO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQge1xyXG4gICdAcHJpbWFyeS1jb2xvcic6IHRva2VuWydwcmltYXJ5LWNvbG9yJ10sIC8vIFx1NTE2OFx1NUM0MFx1NEUzQlx1ODI3MlxyXG4gICdAYmFzZS1iZy1jb2xvcic6ICcjZmZmJyxcclxuICAnQGhvdmVyLWJnLWNvbG9yJzogJ3JnYmEoMCwgMCwgMCwgMC4wMjUpJyxcclxuICAnQGhvdmVyLWJnLWNvbG9yLW5pZ2h0JzogJ3JnYmEoMjU1LCAyNTUsIDI1NSwgMC4wMjUpJyxcclxuICAnQGhlYWRlci1saWdodC1iZy1ob3Zlci1jb2xvcic6ICcjZjZmNmY2JyxcclxuICAnQGhlYWRlci1oZWlnaHQnOiAnODBweCcsXHJcbiAgJ0BoZWFkZXItdXNlci1oZWlnaHQnOiAnNDBweCcsXHJcbiAgJ0BwYWdlLXRhZy1oZWlnaHQnOiAnNDBweCcsXHJcbiAgJ0B0aGVtZS1saXN0JzogWydsaWdodCcsICdkYXJrJywgJ25pZ2h0J10sXHJcbn07XHJcbiIsICJjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZGlybmFtZSA9IFwiRDpcXFxccHJvamVjdFxcXFxcdTY3MkNcdTZFQUFcXFxcdHlwZXNjcmlwdFxcXFxiZW5nYW5nXFxcXGJndHlwZXNjcmlwdE5ld1xcXFxzcmNcXFxcY29tcG9uZW50c1xcXFxTdmdMb2FkXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ZpbGVuYW1lID0gXCJEOlxcXFxwcm9qZWN0XFxcXFx1NjcyQ1x1NkVBQVxcXFx0eXBlc2NyaXB0XFxcXGJlbmdhbmdcXFxcYmd0eXBlc2NyaXB0TmV3XFxcXHNyY1xcXFxjb21wb25lbnRzXFxcXFN2Z0xvYWRcXFxcaW5kZXgudHNcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfaW1wb3J0X21ldGFfdXJsID0gXCJmaWxlOi8vL0Q6L3Byb2plY3QvJUU2JTlDJUFDJUU2JUJBJUFBL3R5cGVzY3JpcHQvYmVuZ2FuZy9iZ3R5cGVzY3JpcHROZXcvc3JjL2NvbXBvbmVudHMvU3ZnTG9hZC9pbmRleC50c1wiOy8qXHJcbiAqIEBEZXNjcmlwdGlvbjogXHJcbiAqIEBWZXJzaW9uOiAxLjBcclxuICogQERhdGU6IDIwMjMtMDctMjcgMjI6NDg6MDJcclxuICogQExhc3RFZGl0VGltZTogMjAyMy0wOC0wNyAwOTo1MzoyOFxyXG4gKi9cclxuaW1wb3J0IHsgcmVhZEZpbGVTeW5jLCByZWFkZGlyU3luYyB9IGZyb20gJ2ZzJ1xyXG5pbXBvcnQgeyBjb25zb2xlIH0gZnJvbSAnaW5zcGVjdG9yJztcclxubGV0IGlkUGVyZml4ID0gJydcclxuY29uc3Qgc3ZnVGl0bGUgPSAvPHN2ZyhbXj4rXS4qPyk+L1xyXG5jb25zdCBjbGVhckhlaWdodFdpZHRoID0gLyh3aWR0aHxoZWlnaHQpPVwiKFtePitdLio/KVwiL2dcclxuY29uc3QgY2hhbmdQYXRoSWQgPSAvKGlkKT0oXCJaT05FfFwiem9uZSkvZ1xyXG5jb25zdCBoYXNWaWV3Qm94ID0gLyh2aWV3Qm94PVwiW14+K10uKj9cIikvZ1xyXG5jb25zdCBjbGVhclJldHVybiA9IC8oXFxyKXwoXFxuKS9nXHJcbi8vIFx1NjdFNVx1NjI3RXN2Z1x1NjU4N1x1NEVGNlxyXG5leHBvcnQgZnVuY3Rpb24gc3ZnRmluZChlOiBhbnkpOiBhbnkge1xyXG4gIGNvbnN0IGFyciA9IFtdXHJcbiAgY29uc3QgZGlyZW50cyA9IHJlYWRkaXJTeW5jKGUsIHsgd2l0aEZpbGVUeXBlczogdHJ1ZSB9KVxyXG4gIGZvciAoY29uc3QgZGlyZW50IG9mIGRpcmVudHMpIHtcclxuICAgIGlmIChkaXJlbnQuaXNEaXJlY3RvcnkoKSkge1xyXG4gICAgICBhcnIucHVzaCguLi5zdmdGaW5kKGUgKyBkaXJlbnQubmFtZSArICcvJykpXHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgbGV0IHN2ZyA9IHJlYWRGaWxlU3luYyhlICsgZGlyZW50Lm5hbWUpXHJcbiAgICAgICAgLnRvU3RyaW5nKClcclxuICAgICAgICAucmVwbGFjZShjbGVhclJldHVybiwgJycpXHJcbiAgICAgICAgLnJlcGxhY2Uoc3ZnVGl0bGUsICgkMTogYW55LCAkMjogYW55LCAkMzogYW55LCAkNDogYW55KSA9PiB7XHJcbiAgICAgICAgICBsZXQgd2lkdGggPSAwLFxyXG4gICAgICAgICAgICBoZWlnaHQgPSAwLFxyXG4gICAgICAgICAgICBjb250ZW50ID0gJDIucmVwbGFjZShjbGVhckhlaWdodFdpZHRoLCAoczE6IGFueSwgczI6IGFueSwgczM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgIGlmIChzMiA9PT0gJ3dpZHRoJykgd2lkdGggPSBzM1xyXG4gICAgICAgICAgICAgIGVsc2UgaWYgKHMyID09PSAnaGVpZ2h0JykgaGVpZ2h0ID0gczNcclxuICAgICAgICAgICAgICByZXR1cm4gJydcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgIGlmICghaGFzVmlld0JveC50ZXN0KCQyKSkgY29udGVudCArPSBgdmlld0JveD1cIjAgMCAke3dpZHRofSAke2hlaWdodH1cImBcclxuICAgICAgICAgIHJldHVybiBgPHN5bWJvbCBpZD1cIiR7aWRQZXJmaXh9LSR7ZGlyZW50Lm5hbWUucmVwbGFjZSgnLnN2ZycsICcnKX1cIiAke2NvbnRlbnR9PmBcclxuICAgICAgICB9KS5yZXBsYWNlKCc8L3N2Zz4nLCAnPC9zeW1ib2w+JylcclxuICAgICAgIHN2ZyA9IHN2Zy5yZXBsYWNlKGNoYW5nUGF0aElkLCBgaWQgPSBcIiR7ZGlyZW50Lm5hbWUucmVwbGFjZSgnLnN2ZycsICcnKX0tWk9ORWApXHJcbiAgICAgIGFyci5wdXNoKHN2ZylcclxuICAgIH1cclxuXHJcblxyXG4gIH1cclxuXHJcbiAgcmV0dXJuIGFyclxyXG59XHJcbi8vIFx1NzUxRlx1NjIxMHN2Z1xyXG5leHBvcnQgY29uc3QgY3JlYXRlU3ZnID0gKHBhdGg6IGFueSwgcGVyZml4ID0gJ3N2ZycpID0+IHtcclxuICBpZiAocGF0aCA9PT0gJycpIHJldHVyblxyXG4gIGlkUGVyZml4ID0gcGVyZml4XHJcbiAgY29uc3QgcmVzID0gc3ZnRmluZChwYXRoKVxyXG5cclxuICByZXR1cm4ge1xyXG4gICAgbmFtZTogJ3N2Zy10cmFuc2Zvcm0nLFxyXG4gICAgdHJhbnNmb3JtSW5kZXhIdG1sKGRvbTogU3RyaW5nKSB7XHJcbiAgICAgIHJldHVybiBkb20ucmVwbGFjZShcclxuICAgICAgICAnPGJvZHk+JyxcclxuICAgICAgICBgPGJvZHk+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgeG1sbnM6eGxpbms9XCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rXCIgc3R5bGU9XCJwb3NpdGlvbjogYWJzb2x1dGU7IHdpZHRoOiAwOyBoZWlnaHQ6IDBcIj4ke3Jlcy5qb2luKCcnKX08L3N2Zz5gXHJcbiAgICAgIClcclxuICAgIH1cclxuICB9XHJcbn1cclxu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
